home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 1 / ETO Development Tools 1.iso / Essentials / MacApp Documentation / MacApp AppleLink Messages / MacApp.Tech$ 3⁄2⁄90 / 0768-Header Printing-Feb90 < prev    next >
Encoding:
Text File  |  1990-03-02  |  2.4 KB  |  77 lines  |  [TEXT/GEOL]

  1. Item    8593117                         26-Feb-90        11:05PST
  2.  
  3. From:   AU0008                          Austria - Kopfwerk,IDV
  4.  
  5. To:     MACAPP.TECH$                    MacApp Technical
  6.  
  7. Sub:    Header Printing
  8.  
  9. Dear colleagues,
  10.  
  11. I have problems with printing of headers and footers. I want to print a
  12. TGridView like the Calc example but with a header on top of each page.
  13.  
  14. Here is the way I solved it (if you think it is bad, please don´t be afraid to
  15. link me…): I overrode TStdPrintHandler to handle 2 views - the normal view
  16. (passed in IStdPrintHandler) and the header view (will be printed in
  17. AdornPage).
  18.  
  19. TSpecPrintHandler = OJBECT(TStdPrintHandler)
  20.       fHeaderView      : TView;
  21.    PROCEDURE TSpecPrintHandler.ISpecPrinthandler (itsDocument: TDocument;
  22. MainView, HeaderView: TView);
  23.    PROCEDURE TSpecPrintHandler.AdornPage;   OVERRIDE;
  24.    PROCEDURE TSpecPrintHandler.FocusOnBorder; OVERRIDE;
  25.    PROCEDURE TSpecPrintHandler.FocusOnInterior; OVERRIDE;
  26. END;
  27.  
  28. PROCEDURE TSpecPrintHandler.ISpecPrinthandler (itsDocument: TDocument;
  29. MainView, HeaderView: TView);
  30. VAR
  31.    aRect   : RECT;
  32. BEGIN
  33.    fHeaderView:= NIL;
  34.    IStdPrintHandler (itsDocument, MainView, FALSE, TRUE, TRUE);
  35.    fHeaderView:= HeaderView;
  36.  
  37.    InstallMargins (aRect, TRUE);     { set drawing area to maximum }
  38.    aRect:= fPageAreas.theMargins;
  39.    aRect.top:= aRect.top + 14;       { reserve room for header }
  40.    InstallMargins (aRect, FALSE);
  41. END;
  42.  
  43. PROCEDURE TSpecPrintHandler.AdornPage;   OVERRIDE;
  44. BEGIN
  45.    INHERITED AdornPage;         { draw frames in debugging mode }
  46.    fHeaderView.DrawContents;    { please draw my header }
  47. END;
  48.  
  49. Normaly during start of printing focusing occurs for the mainview. We print now
  50. alternately 2 views so focusing is neccessary.
  51.  
  52. PROCEDURE TSpecPrintHandler.FocusOnBorder; OVERRIDE;
  53. BEGIN
  54.    IF fHeaderView.Focus THEN ;
  55.    INHERITED FocusOnBorder;     { not real focus, just offsetcalculation }
  56. END;
  57.  
  58.  
  59. PROCEDURE TSpecPrintHandler.FocusOnInterior; OVERRIDE;
  60. BEGIN
  61.    IF fView.Focus THEN   ;
  62.    INHERITED FocusOnInterior;   { not real focus, just offsetcalculation }
  63. END;
  64.  
  65. My way has problems and limitations:
  66. 1. sometimes there is no mainview on the LW output, but you can see it with
  67. "Preview".
  68. 2. You have always the same header, also when horizontal breaks occur.
  69.  
  70. Maybe this is a wrong way, but it seems easy to me. I have not to worry about
  71. CalcPageStrips etc.
  72.  
  73. Thank you in advance,
  74. Tommi
  75. KOPFWERK SW Dev.
  76.  
  77.